package conponent;

import module.MagicPropType;

public interface MagicProp {
    /**
     * 获取魔法属性的优先级
     * 优先级高的魔法属性效果先生效。
     * 主要为了避免冲突和矛盾，
     * 比如 自我+转移+弹射，我们预想的效果，是玩家被弹射出去，也就是先执行自我，再转移，再弹射，不然就有冲突。
     * @return
     */
    int getPriority();

    /**
     * 获取魔法的属性名称
     * @return 魔法属性的枚举值
     */
    MagicPropType getMagicProp();

    /**
     * 获取魔法属性的作用期
     * 作用期就两种：
     * 1.魔法被创建——与实体发送碰撞
     * 2.碰撞发生后
     * @return 0表示创建到碰撞这一时期 1表示碰撞后
     */
    int getActionPeriod();

    /**
     * 魔法词条的效果，被 MagicBallComp调用函数
     * @param mbc
     */
    void effect(MagicBallComp mbc);
}
